<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilsem: XilSEM Versal Client APIs</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilsem
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__xsem__client__apis.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">XilSEM Versal Client APIs</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gabb35fc319871e2265620aae73c7c5791"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#gabb35fc319871e2265620aae73c7c5791">XSem_RegisterEvent</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem___notifier.html">XSem_Notifier</a> *Notifier)</td></tr>
<tr class="memdesc:gabb35fc319871e2265620aae73c7c5791"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to register/un-register event notification with XilSEM Server.  <a href="#gabb35fc319871e2265620aae73c7c5791">More...</a><br/></td></tr>
<tr class="separator:gabb35fc319871e2265620aae73c7c5791"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ad805fe6e1e1dd17beebd59619f7dcc"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga4ad805fe6e1e1dd17beebd59619f7dcc">XSem_CmdCfrInit</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:ga4ad805fe6e1e1dd17beebd59619f7dcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to initialize CRAM scan from user application.  <a href="#ga4ad805fe6e1e1dd17beebd59619f7dcc">More...</a><br/></td></tr>
<tr class="separator:ga4ad805fe6e1e1dd17beebd59619f7dcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga852f1273f06ed25758db240b4d96442e"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga852f1273f06ed25758db240b4d96442e">XSem_CmdCfrStartScan</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:ga852f1273f06ed25758db240b4d96442e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to start CRAM scan from user application.  <a href="#ga852f1273f06ed25758db240b4d96442e">More...</a><br/></td></tr>
<tr class="separator:ga852f1273f06ed25758db240b4d96442e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae3a1c02a449b46f046e00dae2b2a0a7f"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#gae3a1c02a449b46f046e00dae2b2a0a7f">XSem_CmdCfrStopScan</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:gae3a1c02a449b46f046e00dae2b2a0a7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to stop CRAM scan from user application.  <a href="#gae3a1c02a449b46f046e00dae2b2a0a7f">More...</a><br/></td></tr>
<tr class="separator:gae3a1c02a449b46f046e00dae2b2a0a7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gade8e42013440053cf0eeb5e6d34dfa15"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#gade8e42013440053cf0eeb5e6d34dfa15">XSem_CmdCfrNjctErr</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_cfr_err_inj_data.html">XSemCfrErrInjData</a> *ErrDetail, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:gade8e42013440053cf0eeb5e6d34dfa15"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to inject an error at a valid location in CRAM from user application.  <a href="#gade8e42013440053cf0eeb5e6d34dfa15">More...</a><br/></td></tr>
<tr class="separator:gade8e42013440053cf0eeb5e6d34dfa15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga649664a7f7ef4c94cd2d64eaa9a3f6ad"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga649664a7f7ef4c94cd2d64eaa9a3f6ad">XSem_CmdCfrGetStatus</a> (<a class="el" href="struct_x_sem_cfr_status.html">XSemCfrStatus</a> *CfrStatusInfo)</td></tr>
<tr class="memdesc:ga649664a7f7ef4c94cd2d64eaa9a3f6ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read all CRAM Status registers from PMC RAM and send to user application.  <a href="#ga649664a7f7ef4c94cd2d64eaa9a3f6ad">More...</a><br/></td></tr>
<tr class="separator:ga649664a7f7ef4c94cd2d64eaa9a3f6ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3b46228cefc81560e659ca60f5f5d4ac"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga3b46228cefc81560e659ca60f5f5d4ac">XSem_CmdCfrReadFrameEcc</a> (XIpiPsu *IpiInst, u32 CframeAddr, u32 RowLoc, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:ga3b46228cefc81560e659ca60f5f5d4ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to Read frame ECC of a particular Frame.  <a href="#ga3b46228cefc81560e659ca60f5f5d4ac">More...</a><br/></td></tr>
<tr class="separator:ga3b46228cefc81560e659ca60f5f5d4ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac7eac8a55d819df4d84df2c48d95e5d6"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#gac7eac8a55d819df4d84df2c48d95e5d6">XSem_CmdNpiStartScan</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:gac7eac8a55d819df4d84df2c48d95e5d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to start NPI scan from user application.  <a href="#gac7eac8a55d819df4d84df2c48d95e5d6">More...</a><br/></td></tr>
<tr class="separator:gac7eac8a55d819df4d84df2c48d95e5d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacabf49b2dbc63f0d9e960b32de5594d6"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#gacabf49b2dbc63f0d9e960b32de5594d6">XSem_CmdNpiStopScan</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:gacabf49b2dbc63f0d9e960b32de5594d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to stop NPI scan from user application.  <a href="#gacabf49b2dbc63f0d9e960b32de5594d6">More...</a><br/></td></tr>
<tr class="separator:gacabf49b2dbc63f0d9e960b32de5594d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae1747f42d213d24731e0004b1a47e99b"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#gae1747f42d213d24731e0004b1a47e99b">XSem_CmdNpiInjectError</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:gae1747f42d213d24731e0004b1a47e99b"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to inject SHA error in NPI descriptor list (in the first NPI descriptor) from user application.  <a href="#gae1747f42d213d24731e0004b1a47e99b">More...</a><br/></td></tr>
<tr class="separator:gae1747f42d213d24731e0004b1a47e99b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90b532fd63cfdad4790f9144aaca2523"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga90b532fd63cfdad4790f9144aaca2523">XSem_CmdNpiGetGldnSha</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp, <a class="el" href="struct_x_sem___descriptor_data.html">XSem_DescriptorData</a> *DescData)</td></tr>
<tr class="memdesc:ga90b532fd63cfdad4790f9144aaca2523"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to get golden SHA.  <a href="#ga90b532fd63cfdad4790f9144aaca2523">More...</a><br/></td></tr>
<tr class="separator:ga90b532fd63cfdad4790f9144aaca2523"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga81a2507bb54e6b6e8b28399c4196876a"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga81a2507bb54e6b6e8b28399c4196876a">XSem_CmdNpiGetStatus</a> (<a class="el" href="struct_x_sem_npi_status.html">XSemNpiStatus</a> *NpiStatusInfo)</td></tr>
<tr class="memdesc:ga81a2507bb54e6b6e8b28399c4196876a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read all NPI Status registers from PMC RAM and send to user application.  <a href="#ga81a2507bb54e6b6e8b28399c4196876a">More...</a><br/></td></tr>
<tr class="separator:ga81a2507bb54e6b6e8b28399c4196876a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ba3494dc86f68d1843feb2ad69fbbe3"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga4ba3494dc86f68d1843feb2ad69fbbe3">XSem_CmdGetConfig</a> (XIpiPsu *IpiInst, <a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *Resp)</td></tr>
<tr class="memdesc:ga4ba3494dc86f68d1843feb2ad69fbbe3"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read CRAM &amp; NPI configuration.  <a href="#ga4ba3494dc86f68d1843feb2ad69fbbe3">More...</a><br/></td></tr>
<tr class="separator:ga4ba3494dc86f68d1843feb2ad69fbbe3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga328b7ac78458167adf6d0379b01c7540"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga328b7ac78458167adf6d0379b01c7540">XSem_CmdCfrGetCrc</a> (u32 RowIndex)</td></tr>
<tr class="memdesc:ga328b7ac78458167adf6d0379b01c7540"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read CFRAME golden CRC for a row.  <a href="#ga328b7ac78458167adf6d0379b01c7540">More...</a><br/></td></tr>
<tr class="separator:ga328b7ac78458167adf6d0379b01c7540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6aad75df1ff864f2897a8416c0914157"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsem__client__apis.html#ga6aad75df1ff864f2897a8416c0914157">XSem_CmdCfrGetTotalFrames</a> (u32 RowIndex, u32 *FrameCntPtr)</td></tr>
<tr class="memdesc:ga6aad75df1ff864f2897a8416c0914157"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read total frames in a row.  <a href="#ga6aad75df1ff864f2897a8416c0914157">More...</a><br/></td></tr>
<tr class="separator:ga6aad75df1ff864f2897a8416c0914157"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga328b7ac78458167adf6d0379b01c7540"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u32 XSem_CmdCfrGetCrc </td>
          <td>(</td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>RowIndex</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to read CFRAME golden CRC for a row. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">RowIndex</td><td>Row index for which CRC to be read (Min: 0 , Max: CFU_ROW_RANGE -1)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the Golden CRC for a given Row.</dd></dl>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>Total number of rows is not same for all platforms.</li>
<li>The number maximum rows (CFU_ROW_RANGE) can be obtained by reading the address CFU_ROW_RANGE(0XF12B006C). </li>
</ul>
</dd></dl>
<p>SEU Golden Hardware CRC from first scan is stored in Bits [95:64] of CFRAME_SEU_CRC_ADDR (128-Bit) register</p>
<p>Read CRC register word 0</p>
<p>Read CRC register word 1</p>
<p>Read CRC register word 2 and store it as GoldenCrc</p>
<p>Read CRC register word 3</p>
<p>Return GoldenCrc </p>

<p>References <a class="el" href="xsem__client__api_8h.html#abee8d469be42a99f2db8f9322a0bd3d6">CFRAME_BASE_ADDRESS</a>, <a class="el" href="xsem__client__api_8h.html#ab009a618e254320a9dbf57562214fb83">CFRAME_ROW_OFFSET</a>, and <a class="el" href="xsem__client__api_8h.html#a2593a7cfde0f1b857b4368a92d5aa84c">CFRAME_SEU_CRC_ADDR</a>.</p>

<p>Referenced by <a class="el" href="xsem__cram__example__pl__mb_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="ga649664a7f7ef4c94cd2d64eaa9a3f6ad"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdCfrGetStatus </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_x_sem_cfr_status.html">XSemCfrStatus</a> *&#160;</td>
          <td class="paramname"><em>CfrStatusInfo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to read all CRAM Status registers from PMC RAM and send to user application. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">CfrStatusInfo</td><td>Structure Pointer with CRAM Status details<ul>
<li>CfrStatusInfo-&gt;Status: Provides details about CRAM scan<ul>
<li>Bit [31-25]: Reserved</li>
<li>Bit [24:20]: CRAM Error codes<ul>
<li>00001: Unexpected CRC error when CRAM is not in observation state</li>
<li>00010: Unexpected ECC error when CRAM is not in Observation or Initialization state</li>
<li>00011: Safety write error in SEU handler</li>
<li>00100: ECC/CRC ISR not found in any Row</li>
<li>00101: CRAM Initialization is not done</li>
<li>00110: CRAM Start Scan failure</li>
<li>00111: CRAM Stop Scan failure</li>
<li>01000: Invalid Row for Error Injection</li>
<li>01001: Invalid QWord for Error Injection</li>
<li>01010: Invalid Bit for Error Injection</li>
<li>01011: Invalid Frame Address for Error Injection</li>
<li>01100: Unexpected Bit flip during Error Injection</li>
<li>01101: Masked Bit during Injection</li>
<li>01110: Invalid Block Type for Error Injection</li>
<li>01111: CRC or Uncorrectable Error or correctable error(when correction is disabled) is active in CRAM</li>
<li>10000: ECC or CRC Error detected during CRAM Calibration in case of SWECC</li>
</ul>
</li>
<li>Bit [19-18]: Reserved</li>
<li>Bit [17]: 0: CRAM scan is enabled in design 1: CRAM scan is disabled in design</li>
<li>Bit [16]: 0: CRAM scan is not initialized 1: CRAM Initialization is completed</li>
<li>Bit [15-14]: CRAM Correctable ECC error status<ul>
<li>00: No Correctable error encountered</li>
<li>01: Correctable error is detected and corrected</li>
<li>10: Correctable error is detected but not corrected (Correction is disabled)</li>
<li>11: Reserved</li>
</ul>
</li>
<li>Bit [13]: 0: No error in CRAM scan 1: CRAM scan has internal error (Null pointer access/Safety write error) In this error condition, scan will be stopped and an event will be sent to R5.</li>
<li>Bit [12]: 0: No error in error decoding 1: Invalid Error Location is reported In this error condition, scan will be stopped and an event will be sent to R5.</li>
<li>Bit [11]: 0: No correctable error detected 1: Correctable ECC error detected In this condition, an event will be sent to R5. If correction is disabled, then scan will be stopped. Else, scan will continue to run.</li>
<li>Bit [10]: 0: No CRC error 1: CRC error is detected by CRAM. In this error condition, scan will be stopped and an event will be sent to R5.</li>
<li>Bit [09]: 0: No uncorrectable error 1: Uncorrectable ECC error is detected In this error condition, scan will be stopped and an event will be sent to R5.</li>
<li>Bit [08]: 0: No error in CRAM scan start-up test 1: CRAM start-up test failure In this error condition, scan will be stopped.</li>
<li>Bit [07]: 0: No error during CRAM calibration` 1: CRAM Calibration Timeout error In this error condition, scan will be stopped and an event will be sent to R5.</li>
<li>Bit [06]: 0: CRAM scan is not in the fatal state 1: CRAM scan is in the fatal state This bit is for CRAM scan state.</li>
<li>Bit [05]: 0: CRAM scan is not in the error injection state 1: CRAM scan is in the error injection state This bit is for CRAM scan state.</li>
<li>Bit [04]: 0: CRAM scan is not in the idle state 1: CRAM scan is in the idle state This bit is for CRAM scan state.</li>
<li>Bit [03]: 0: CRAM scan is not in the correction state 1: CRAM scan is in the correction state This bit is for CRAM scan state.</li>
<li>Bit [02]: 0: CRAM scan is not in the observation state 1: CRAM scan is in the observation state This bit is for CRAM scan state.</li>
<li>Bit [01]: 0: CRAM scan is not in the Initialization state 1: CRAM scan is in the Initialization state This bit is for CRAM scan state.</li>
<li>Bit [00]: CRAM Scan is included in design This bit is for CRAM scan state.</li>
</ul>
</li>
<li>CfrStatusInfo-&gt;ErrAddrL: This stores the low address of the last 7 corrected error details if correction is enabled in design.<ul>
<li>Bit [31:28]: Reserved</li>
<li>Bit [27:23]: QWord location where error was detected</li>
<li>Bit [22:16]: Bit location where error was detected</li>
<li>Bit [15:2]: Reserved</li>
<li>Bit [1:0]: Define validity of error address.<ul>
<li>00: Info not available</li>
<li>01: Address out of range</li>
<li>10: Reserved</li>
<li>11: Address valid</li>
</ul>
</li>
</ul>
</li>
<li>CfrStatusInfo-&gt;ErrAddrH: This stores the high address of the last 7 corrected error details if correction is enabled in design.<ul>
<li>Bits[31:27]: Reserved</li>
<li>Bits[26:23]: Row number where error was detected</li>
<li>Bits[22:20]: Block type of the frame</li>
<li>Bits[19:0]: Frame address where error was detected</li>
</ul>
</li>
<li>CfrStatusInfo-&gt;ErrCorCnt: Counter value of Correctable Error Bits</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: If NULL pointer reference of CfrStatusInfo</li>
<li>XST_SUCCESS: On successful read from PMC RAM </li>
</ul>
</dd></dl>

<p>References <a class="el" href="struct_x_sem_cfr_status.html#ab833bd42039240f18e2637d47b8e2956">XSemCfrStatus::ErrAddrH</a>, <a class="el" href="struct_x_sem_cfr_status.html#ade29b60e7b0785d909c7065bd54ad9c9">XSemCfrStatus::ErrAddrL</a>, <a class="el" href="struct_x_sem_cfr_status.html#a4761efb652d2500853d8cb20c54f6578">XSemCfrStatus::ErrCorCnt</a>, <a class="el" href="xsem__client__api_8h.html#a4a89a50aecbaec25f7bf43f69ca7ad12">MAX_CRAMERR_REGISTER_CNT</a>, <a class="el" href="xsem__client__api_8h.html#a8d464c27800a055938fc7bfee75e5e61">PMC_RAM_SEM_CRAM_COR_BITCNT</a>, <a class="el" href="xsem__client__api_8h.html#aeb022611cd619fbb98c478a089d77bf3">PMC_RAM_SEM_CRAM_STATUS</a>, <a class="el" href="xsem__client__api_8h.html#aef301aacc998d1a27fb3ed51688a728a">PMC_RAM_SEM_CRAMERR_ADDRH0</a>, <a class="el" href="xsem__client__api_8h.html#afdeb9be3fb0531467fe29cb8f70b3d9c">PMC_RAM_SEM_CRAMERR_ADDRL0</a>, and <a class="el" href="struct_x_sem_cfr_status.html#addd887c9fd58e8458504557f871e9db3">XSemCfrStatus::Status</a>.</p>

<p>Referenced by <a class="el" href="xsem__cram__example__pl__mb_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="ga6aad75df1ff864f2897a8416c0914157"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void XSem_CmdCfrGetTotalFrames </td>
          <td>(</td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>RowIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32 *&#160;</td>
          <td class="paramname"><em>FrameCntPtr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to read total frames in a row. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">RowIndex</td><td>Row index for which total number of frames is to be read (Min: 0 , Max: CFU_ROW_RANGE -1) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">FrameCntPtr</td><td>Pointer to store Total frames<ul>
<li>FrameCntPtr[0] : Type_0 total frames</li>
<li>FrameCntPtr[1] : Type_1 total frames</li>
<li>FrameCntPtr[2] : Type_2 total frames</li>
<li>FrameCntPtr[3] : Type_3 total frames</li>
<li>FrameCntPtr[4] : Type_4 total frames</li>
<li>FrameCntPtr[5] : Type_5 total frames</li>
<li>FrameCntPtr[6] : Type_6 total frames</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>Total number of frames in a row is not same for all rows.</li>
<li>XSem_CmdCfrGetTotalFrames API is provided to know the total number of frames in a row for each block. Output param (FrameCntPtr) of XSem_CmdCfrGetTotalFrames API is updated with total number of frames of each block type for the input row. If a particular block in a row has 0 frames, then error injection shall not be performed. Range of Frame number: 0 to (FrameCntPtr[n] - 1) where n is block type with range 0 to 6.</li>
<li>The safe location to perform error injection is QWORD 12 which has ECC bits. The error injection will not change the design behaviour. </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#abee8d469be42a99f2db8f9322a0bd3d6">CFRAME_BASE_ADDRESS</a>, <a class="el" href="xsem__client__api_8h.html#a3853441dd07e42d092fcd13292e4594b">CFRAME_BIT_0_19_MASK</a>, <a class="el" href="xsem__client__api_8h.html#afb6badc42fd343ce74a376e55d4c4bd6">CFRAME_BIT_20_39_MASK_HIGH</a>, <a class="el" href="xsem__client__api_8h.html#a73f9414c1bea3aa72fa0c7f97c667788">CFRAME_BIT_20_39_MASK_LOW</a>, <a class="el" href="xsem__client__api_8h.html#a902d9ef0d5507a54e428f6d19bf4f579">CFRAME_BIT_20_39_SHIFT_L</a>, <a class="el" href="xsem__client__api_8h.html#ad9f0d95bafbce3fa6025a1cf8e3117aa">CFRAME_BIT_20_39_SHIFT_R</a>, <a class="el" href="xsem__client__api_8h.html#a370b7c2865e181d6e45e3b54e59ab71f">CFRAME_BIT_40_59_MASK</a>, <a class="el" href="xsem__client__api_8h.html#a61c67de2fe36179e9c8b9af263184489">CFRAME_BIT_40_59_SHIFT_R</a>, <a class="el" href="xsem__client__api_8h.html#a7e924755fecccdd378ce5e90c5630b79">CFRAME_BIT_60_79_MASK_HIGH</a>, <a class="el" href="xsem__client__api_8h.html#ab38ccfe0f01c730a7d4dc427d434467b">CFRAME_BIT_60_79_MASK_LOW</a>, <a class="el" href="xsem__client__api_8h.html#abdde51af4e812983d0f737525f0d047b">CFRAME_BIT_60_79_SHIFT_L</a>, <a class="el" href="xsem__client__api_8h.html#a4ac783f0014e9c0978d3f548a72abb9e">CFRAME_BIT_60_79_SHIFT_R</a>, <a class="el" href="xsem__client__api_8h.html#abdd8131147d8721efb53d6fd1091e3f2">CFRAME_LAST_BOT_ADDR</a>, and <a class="el" href="xsem__client__api_8h.html#ab009a618e254320a9dbf57562214fb83">CFRAME_ROW_OFFSET</a>.</p>

<p>Referenced by <a class="el" href="xsem__cram__example__pl__mb_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="ga4ad805fe6e1e1dd17beebd59619f7dcc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdCfrInit </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to initialize CRAM scan from user application. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to start CRAM
    Scan Initialization, waits for PLM to process the request and reads
     the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of CRAM Initialization(0x10301)</li>
<li>Resp-&gt;RespMsg2: Status of CRAM Initialization 0x01000000U - ECC/CRC error detected during calibration in case of SWECC 0X00000080U - Calibration timeout 0X00002000U - Internal error</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On CRAM Initialization failure</li>
<li>XST_SUCCESS: On CRAM Initialization success </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#a3799e4e04c0e264dd4c641b3c83ff772">CMD_ID_CFR_INIT</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>.</p>

</div>
</div>
<a class="anchor" id="gade8e42013440053cf0eeb5e6d34dfa15"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdCfrNjctErr </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_cfr_err_inj_data.html">XSemCfrErrInjData</a> *&#160;</td>
          <td class="paramname"><em>ErrDetail</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to inject an error at a valid location in CRAM from user application. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to perform
    error injection in CRAM with user provided arguments in
    *ErrDetail, waits for PLM to process the request and reads
    the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ErrDetail</td><td>Structure Pointer with Error Injection details<ul>
<li>ErrDetail-&gt;Row : Row Number (Min: 0 , Max: (value at CFU_ROW_RANGE)-1)</li>
<li>ErrDetail-&gt;Efar : Frame Address<ul>
<li>Frame Number [0:19] (Refer note)</li>
<li>Block Type [20:22]</li>
</ul>
</li>
<li>ErrDetail-&gt;Qword : Quad Word(Min: 0, Max: 24)</li>
<li>ErrDetail-&gt;Bit : Bit Position(Min: 0, Max: 127) </li>
</ul>
</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of CRAM error injection(0x10304)</li>
<li>Resp-&gt;RespMsg2: Status of CRAM error injection 0x00002000 – Null pointer error 0x00500000 – CRAM init not done 0x00800000 – Invalid row 0x00900000 – Invalid qword 0x00A00000 – Invalid bit 0x00B00000 – Invalid frame address 0x00C00000 – Unexpected bits flipped 0x00D00000 – Masked bit 0x00E00000 – Invalid block type 0x00F00000 – Active crc/uncor ecc error in CRAM</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On CRAM error injection failure</li>
<li>XST_SUCCESS: On CRAM error injection success </li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>Total number of frames in a row is not same for all rows.</li>
<li>XSem_CmdCfrGetTotalFrames API is provided to know the total number of frames in a row for each block. Output param (FrameCntPtr) of XSem_CmdCfrGetTotalFrames API is updated with total number of frames of each block type for the input row. If a particular block in a row has 0 frames, then error injection shall not be performed. Range of Frame number: 0 to (FrameCntPtr[n] - 1) where n is block type with range 0 to 6. <pre class="fragment"> - The safe location to perform error injection is QWORD 12 which has
</pre> ECC bits. The error injection will not change the design behaviour. </li>
</ul>
</dd></dl>

<p>References <a class="el" href="struct_x_sem_cfr_err_inj_data.html#a12e52c2f767a33cb05539e9871cd580a">XSemCfrErrInjData::Bit</a>, <a class="el" href="xsem__client__api_8h.html#a11bd900b5acf0c06c8c3b247af069159">CMD_ID_CFR_NJCT_ERR</a>, <a class="el" href="struct_x_sem_cfr_err_inj_data.html#a254b3d1dd5ee7d247574ec3d589d8267">XSemCfrErrInjData::Efar</a>, <a class="el" href="struct_x_sem_cfr_err_inj_data.html#a497a888fda44876daa4b459540ef28d1">XSemCfrErrInjData::Qword</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>, and <a class="el" href="struct_x_sem_cfr_err_inj_data.html#aa3295aad6d645a2a33e3a11c3e028ce1">XSemCfrErrInjData::Row</a>.</p>

</div>
</div>
<a class="anchor" id="ga3b46228cefc81560e659ca60f5f5d4ac"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdCfrReadFrameEcc </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>CframeAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>RowLoc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to Read frame ECC of a particular Frame. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to invoke SEM
    CRAM SendFrameEcc, waits for PLM to process the request and reads
    the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">CframeAddr</td><td>Frame Address<ul>
<li>Frame Number [0:19] (Refer note)</li>
<li>Block Type [20:22] </li>
</ul>
</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">RowLoc</td><td>Row index(Min: 0 , Max: CFU_ROW_RANGE -1) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of CRAM Send Frame ECC(0x3030A)</li>
<li>Resp-&gt;RespMsg2: Segment 0 ECC value</li>
<li>Resp-&gt;RespMsg3: Segment 1 ECC value</li>
<li>Resp-&gt;RespMsg4: Status of CRAM stop scan</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On CRAM Read Frame ECC failure</li>
<li>XST_SUCCESS: On CRAM Read Frame ECC success</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>Total number of frames in a row is not same for all rows.</li>
<li>XSem_CmdCfrGetTotalFrames API is provided to know the total number of frames in a row for each block. Output param (FrameCntPtr) of XSem_CmdCfrGetTotalFrames API is updated with total number of frames of each block type for the input row. If a particular block in a row has 0 frames, then error injection shall not be performed. Range of Frame number: 0 to (FrameCntPtr[n] - 1) where n is block type with range 0 to 6. <pre class="fragment"> - The safe location to perform error injection is QWORD 12 which has
</pre> ECC bits. The error injection will not change the design behaviour. </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#aece47ef6425a671a394be12f2f689b17">CMD_ID_CFR_RDFRAME_ECC</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a279939a3e855020b8e0648fb7d95a1e5">XSemIpiResp::RespMsg3</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a6c53aa10485996d8a9a3ad24a667e058">XSemIpiResp::RespMsg4</a>.</p>

<p>Referenced by <a class="el" href="xsem__cram__example__pl__mb_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="ga852f1273f06ed25758db240b4d96442e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdCfrStartScan </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to start CRAM scan from user application. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to invoke SEM
    CRAM StartScan, waits for PLM to process the request and reads
    the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of CRAM start scan(0x10302)</li>
<li>Resp-&gt;RespMsg2: Status of CRAM start scan 0x2000 – Null pointer error 0x00F00000 – Active crc/uncor error 0x00500000 – CRAM init not done 0x00600000 – Start scan failed</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On CRAM start scan failure</li>
<li>XST_SUCCESS: On CRAM start scan success </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#a4ae7ee4caa1c070afe0abb2db78cd91f">CMD_ID_CFR_START_SCAN</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>.</p>

</div>
</div>
<a class="anchor" id="gae3a1c02a449b46f046e00dae2b2a0a7f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdCfrStopScan </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to stop CRAM scan from user application. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to invoke SEM
    CRAM StopScan, waits for PLM to process the request and reads
    the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of CRAM stop scan(0x10303)</li>
<li>Resp-&gt;RespMsg2: Status of CRAM stop scan 0x00500000 – CRAM init not done 0x00700000 – Stop scan failed</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On CRAM stop scan failure</li>
<li>XST_SUCCESS: On CRAM stop scan success </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#a9cbf382ac9d472a65ba10de162fe0512">CMD_ID_CFR_STOP_SCAN</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>.</p>

</div>
</div>
<a class="anchor" id="ga4ba3494dc86f68d1843feb2ad69fbbe3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdGetConfig </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to read CRAM &amp; NPI configuration. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to invoke SEM
    Get configuration command, waits for PLM to process the request and
    reads the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of Get Configuration(0x30309)</li>
<li>Resp-&gt;RespMsg2: CRAM Attribute register details<ul>
<li>Bit [31:16]: Not Implemented</li>
<li>Bit [15:9]: Reserved</li>
<li>Bit [8]: Reserved</li>
<li>Bit [7]: Reserved</li>
<li>Bit [6:5]: Indicates when to start CRAM scan<ul>
<li>00: Do not automatically start scan</li>
<li>01: Enable scan automatically after device configuration.</li>
<li>10: Reserved</li>
<li>11: Reserved</li>
</ul>
</li>
<li>Bit [4]: Reserved</li>
<li>Bit [3]: Indicates HwECC/SwECC<ul>
<li>0: Uses hardware calculated ECC.</li>
<li>1: Uses software calculated ECC that comes from tools and part of CDO</li>
</ul>
</li>
<li>Bit [2]: Indicates Correctable error is to be corrected/not<ul>
<li>0: Disables error correction capability</li>
<li>1: Enables error correction capability</li>
</ul>
</li>
<li>Bit [1:0]: Define the mode of the scan (Enable/Disable scan)<ul>
<li>00: Disable Configuration RAM scan</li>
<li>01: RESERVED</li>
<li>10: Enable Configuration RAM scan</li>
<li>11: RESERVED</li>
</ul>
</li>
</ul>
</li>
<li>Resp-&gt;RespMsg3: NPI Attribute register details<ul>
<li>Bit [31:24]: Not implemented</li>
<li>Bit [23:18]: Reserved</li>
<li>Bit [17:8]: The scheduled time in milliseconds that the NPI scan will be periodically performed. Default Setting: 0x064 = 100ms</li>
<li>Bit [7:6]: Reserved</li>
<li>Bit [5:4]: Indicates when to start NPI scan<ul>
<li>00: Do not automatically start scan</li>
<li>01: Enable scan automatically after device configuration.</li>
<li>10: Reserved</li>
<li>11: Reserved</li>
</ul>
</li>
<li>Bit [3]: Reserved</li>
<li>Bit [2]: Indicates HwSHA/SwSHA 0: Use hardware calculated SHA. 1: Use software calculated SHA.</li>
<li>Bit [1:0]: Reserved</li>
</ul>
</li>
<li>Resp-&gt;RespMsg4: Status of Get Configuration command</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On Get Configuration failure</li>
<li>XST_SUCCESS: On Get Configuration success </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#aa6c03ecbb045cdc96df0a216a6516531">CMD_ID_SEM_GET_CONFIG</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a279939a3e855020b8e0648fb7d95a1e5">XSemIpiResp::RespMsg3</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a6c53aa10485996d8a9a3ad24a667e058">XSemIpiResp::RespMsg4</a>.</p>

<p>Referenced by <a class="el" href="xsem__cram__example__pl__mb_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="ga90b532fd63cfdad4790f9144aaca2523"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdNpiGetGldnSha </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem___descriptor_data.html">XSem_DescriptorData</a> *&#160;</td>
          <td class="paramname"><em>DescData</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to get golden SHA. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of NPI get golden SHA(0x10310)</li>
<li>Resp-&gt;RespMsg2: Status of NPI get golden SHA </li>
</ul>
</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">DescData</td><td>Structure pointer to hold total descriptor count, golden SHA and information related to descriptors</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On NPI golden SHA retrieve failure</li>
<li>XST_SUCCESS: On NPI golden SHA retrieve success </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#a20b6bbd3a459b393712afc49cc6a8350">CMD_NPI_GET_GLDN_SHA</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>.</p>

<p>Referenced by <a class="el" href="xsem__npi__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="ga81a2507bb54e6b6e8b28399c4196876a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdNpiGetStatus </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_x_sem_npi_status.html">XSemNpiStatus</a> *&#160;</td>
          <td class="paramname"><em>NpiStatusInfo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to read all NPI Status registers from PMC RAM and send to user application. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">NpiStatusInfo</td><td>Structure Pointer with NPI Status details<ul>
<li>NpiStatusInfo-&gt;Status: Provides details about NPI scan<ul>
<li>Bit [31]: 0 - No error, SHA-3 engine is present 1 - Cryptographic acceleration blocks are disabled for export compliance. No support for NPI scan, an event will be sent to R5</li>
<li>Bit [30]: 0 - NPI scan is running for scheduled interval 1 - Indicates NPI scan failed to run on scheduled interval. If NPI scan is not executed as per the configured periodicity, the error will notified to R5 user. The scan will continue to run</li>
<li>Bit [29]: 0- No descriptor missed during scanning 1- Indicates NPI scan failed to scan all descriptors completely (excluding arbitration failures). This will be notified to R5 user and the scan will continue to run.</li>
<li>Bit [28]: 0 - NPI scan executing within budget time 1 - Indicates NPI scan has exceeded maximum budget execution time of 20ms. This will be notified to R5 user and the scan will continue to run.</li>
<li>Bit [27]: 0 - No error in SLR to SLR communication 1 - Indicates failure in SSIT internal communication channel This bit is applicable for SSIT devices.</li>
<li>Bit [26]: Reserved</li>
<li>Bit [25]: 0 - No error in PMC_PL_GPO 1 - Indicates GPO Initialization or write failed. This is HW failure. In this condition, the scan will be stopped, and notification will be sent to R5</li>
<li>Bit [24]: 0 - No error SHA-3 engine 1 - Indicates SHA engine failed to function during initialization or start or DMA transfer. This is HW failure. In this condition, the scan will be stopped, and notification will be sent to R5</li>
<li>Bit [23]: 0 - No error in register writes 1 - Indicates the register write and read back failure occurred during the scan. This is HW failure. In this condition, the scan will be stopped, and notification will be sent to R5</li>
<li>Bit [22]: Reserved</li>
<li>Bit [21]: 0 - No error in DDR calibration 1 - Indicates NPI DDRMC Main Slave Arbitration Timeout occurred during the scan. If the DDRMC calibration is not done, the descriptor will be skipped and scan will continue to run for next descriptor</li>
<li>Bit [20]: 0 - No error in descriptor format 1 - Indicates NPI Descriptor has invalid format. This failure indicates that there is some corruption in the XilSEM NPI descriptor data. The scan will be stopped, and notification will be sent to R5</li>
<li>Bit [19]: 0 - No error in NPI Descriptor SHA header 1 - Indicates NPI Descriptor SHA Header mismatch occurred during the scan. This failure indicates that there is some corruption in the XilSEM NPI descriptor data. The scan will be stopped, and notification will be sent to R5</li>
<li>Bit [18]: 0 - NPI descriptors are present in the memory 1 - Indicates the absence of NPI Descriptor (Zero descriptors) This failure indicates that there is some corruption in the XilSEM NPI descriptor data. The scan will be stopped, and notification will be sent to R5</li>
<li>Bit [17]: 0 - No error in SHA comparison during run time 1- Indicates SHA comparison failure occurred during run time. This failure indicates that there is some bit flip in the NPI registers. The scan will be stopped and an event will be sent to R5</li>
<li>Bit [16]: 0 - No error in SHA comparison during first scan 1- Indicates SHA comparison failure occurred during initialization. This failure indicates that there is some bit flip in the NPI registers. The scan will be stopped and an event will be sent to R5</li>
<li>Bit [15-12]: Reserved</li>
<li>Bit [11]: 0 - NPI scan task is not added to PLM Scheduler to run periodically 1 - NPI scan task is added to PLM Scheduler to run periodically This bit is for NPI scan state information.</li>
<li>Bit [10]: NPI scan is suspended 0 - NPI scan is not suspended 1 - NPI scan is suspended due to errors This bit is for NPI scan state information.</li>
<li>Bit [09]: 0 - NPI scan initialization is not done 1 - NPI scan initialization is done This bit is for NPI scan state information.</li>
<li>Bit [08]: 0 - NPI scan is present in the design 1 - NPI scan disabled in the design This bit is for NPI scan state information.</li>
<li>Bit [07-06]: Reserved</li>
<li>Bit [05]: 0 - No internal error 1 - NPI scan is in error state (due to timeouts, invalid descriptors) This bit is for NPI scan state information.</li>
<li>Bit [04]: 0 - No error in NPI Scan 1 - NPI scan in SHA comparison mismatch error state. This bit is for NPI scan state information.</li>
<li>Bit [03]: 0 - NPI scan is not in SHA error inject state 1 - NPI scan is in SHA error inject state. This bit is for NPI scan state information.</li>
<li>Bit [02]: 0 - NPI scan is not in scan state 1 - NPI scan is in scan state. This bit is for NPI scan state information.</li>
<li>Bit [01]: 0 - NPI scan is not in initialization state 1 - NPI scan is in initialization state This bit is for NPI scan state information.</li>
<li>Bit [00]: 0 - NPI scan is not in idle state 1 - NPI scan is in idle state This bit is for NPI scan state information.</li>
</ul>
</li>
<li>NpiStatusInfo-&gt;SlvSkipCnt: Provides NPI descriptor slave skip counter value if arbitration failure. This is 8 words result to accommodate 32 1-Byte skip counters for individual slaves arbitration failures. Slaves can be DDRMC Main, GT for which arbitration is required before performing scanning.</li>
<li>NpiStatusInfo-&gt;ScanCnt: NPI scan counter value. This counter represents number of periodic scan cycle completion.</li>
<li>NpiStatusInfo-&gt;HbCnt: NPI heartbeat counter value. This counter represents number of scanned descriptor slaves.</li>
<li>NpiStatusInfo-&gt;ErrInfo: NPI scan error information if SHA mismatch is detected. This is 2 word information.<ul>
<li>Word 0: Node ID of descriptor for which SHA mismatch is detected</li>
<li>Word 1 Bit [15-8]: NPI descriptor index number</li>
<li>Word 1 Bit [7-0]: NPI Slave Skip count Index</li>
</ul>
</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: If NULL pointer reference of NpiStatusInfo</li>
<li>XST_SUCCESS: On successful read from PMC RAM </li>
</ul>
</dd></dl>

<p>References <a class="el" href="struct_x_sem_npi_status.html#a0b7d87074b8e1445554c051089fb7228">XSemNpiStatus::ErrInfo</a>, <a class="el" href="struct_x_sem_npi_status.html#af831524318353b603e14fda32c75809f">XSemNpiStatus::HbCnt</a>, <a class="el" href="xsem__client__api_8h.html#af3fd0512f794e86ac22bce16c7b4a170">MAX_NPI_ERR_INFO_CNT</a>, <a class="el" href="xsem__client__api_8h.html#af9560eda50f4b3e80b3113074fb27707">MAX_NPI_SLV_SKIP_CNT</a>, <a class="el" href="xsem__client__api_8h.html#a51c4e53fcfa0392e930ffc8ebf07a939">PMC_RAM_SEM_NPI_HEARTBEAT_CNT</a>, <a class="el" href="xsem__client__api_8h.html#a07e62de90c40d738d76765718322ff46">PMC_RAM_SEM_NPI_SCAN_CNT</a>, <a class="el" href="xsem__client__api_8h.html#ad592ec6982164cd96c3a020aa0bc0982">PMC_RAM_SEM_NPI_SLVSKIP_CNT0</a>, <a class="el" href="xsem__client__api_8h.html#a6ab5c3a093b73fb19251432cf39e0ea0">PMC_RAM_SEM_NPI_STATUS</a>, <a class="el" href="xsem__client__api_8h.html#aab6ea9e6ac69e6b30b9e038b690d0135">PMC_RAM_SEM_NPIERR_INFO0</a>, <a class="el" href="struct_x_sem_npi_status.html#af86519a71bc534fd458933dd18fa46d4">XSemNpiStatus::ScanCnt</a>, <a class="el" href="struct_x_sem_npi_status.html#ad6bb1c2e66f4523d239e18ff685a9ca9">XSemNpiStatus::SlvSkipCnt</a>, and <a class="el" href="struct_x_sem_npi_status.html#a00fb9e1d6176efdd76fa98fb28e68234">XSemNpiStatus::Status</a>.</p>

<p>Referenced by <a class="el" href="xsem__npi__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>, <a class="el" href="xsem__npi__example__pl__mb_8c.html#a8eda281f7a0e850ffe2973a997cc8fbd">XSem_ApiCheckHbtCount()</a>, and <a class="el" href="xsem__npi__example__pl__mb_8c.html#a0d1727d5d5abe0b3a960bc035bc4d45e">XSem_ApiCheckScanCount()</a>.</p>

</div>
</div>
<a class="anchor" id="gae1747f42d213d24731e0004b1a47e99b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdNpiInjectError </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to inject SHA error in NPI descriptor list (in the first NPI descriptor) from user application. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to invoke
    SEM NPI ErrorInject, waits for PLM to process the request and
    reads the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of NPI error injection(0x10307)</li>
<li>Resp-&gt;RespMsg2: Status of NPI error injection (0: Success, 1: Failure)</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On NPI error injection failure</li>
<li>XST_SUCCESS: On NPI error injection success</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The caller shall invoke this XSem_CmdNpiInjectError function again to correct the injected error in NPI descriptor. </dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#a4e58c5f6fd099aaea1da4e1b2ba2575d">CMD_NPI_ERRINJECT</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>.</p>

<p>Referenced by <a class="el" href="xsem__npi__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="gac7eac8a55d819df4d84df2c48d95e5d6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdNpiStartScan </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to start NPI scan from user application. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to invoke
    SEM NPI StartScan, waits for PLM to process the request and
    reads the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of NPI start scan(0x10305)</li>
<li>Resp-&gt;RespMsg2: Status of NPI start scan (0: Success, 1: Failure)</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On NPI start scan failure</li>
<li>XST_SUCCESS: On NPI start scan success </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#a711a5fc40b1fdc6f6192a50e1e1eb238">CMD_NPI_STARTSCAN</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>.</p>

<p>Referenced by <a class="el" href="xsem__npi__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="gacabf49b2dbc63f0d9e960b32de5594d6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_CmdNpiStopScan </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem_ipi_resp.html">XSemIpiResp</a> *&#160;</td>
          <td class="paramname"><em>Resp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to stop NPI scan from user application. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to invoke
    SEM NPI StopScan, waits for PLM to process the request and
    reads the response message.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">Resp</td><td>Structure Pointer of IPI response<ul>
<li>Resp-&gt;RespMsg1: Acknowledgment ID of NPI stop scan(0x10306)</li>
<li>Resp-&gt;RespMsg2: Status of NPI stop scan (0: Success, 1: Failure)</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On NPI stop scan failure</li>
<li>XST_SUCCESS: On NPI stop scan success </li>
</ul>
</dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#acfd51048ab4d01bbeef1fc3ff2f44a40">CMD_NPI_STOPSCAN</a>, <a class="el" href="struct_x_sem_ipi_resp.html#a7d7eea2dd43f003a0602eeebaf3ac85d">XSemIpiResp::RespMsg1</a>, and <a class="el" href="struct_x_sem_ipi_resp.html#a1502bcdecb5e80f54fd9f283dfeb8a2c">XSemIpiResp::RespMsg2</a>.</p>

<p>Referenced by <a class="el" href="xsem__npi__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="gabb35fc319871e2265620aae73c7c5791"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus XSem_RegisterEvent </td>
          <td>(</td>
          <td class="paramtype">XIpiPsu *&#160;</td>
          <td class="paramname"><em>IpiInst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_sem___notifier.html">XSem_Notifier</a> *&#160;</td>
          <td class="paramname"><em>Notifier</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used to register/un-register event notification with XilSEM Server. </p>
<pre class="fragment">    Primarily this function sends an IPI request to PLM to invoke
    SEM Event Notifier registration, waits for PLM to process the
    request and check the status. Since SLR slave devices do not support
    IPI, registering events to mater registers events on all slave SLRs
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">IpiInst</td><td>Pointer to IPI driver instance </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">Notifier</td><td>Pointer of the notifier object to be associated with the requested notification<ul>
<li>Notifier-&gt;Module: The SEM module from which notification is required</li>
<li>Notifier-&gt;Event: Event(s) belonging to the Module for which notifications are required</li>
<li>Notifier-&gt;Flag: Flags to enable or disable notifications</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API returns the success or failure.<ul>
<li>XST_FAILURE: On event registration/un-registration failure</li>
<li>XST_SUCCESS: On event registration/un-registration success</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The caller shall initialize the notifier object before invoking the XSem_RegisterEvent function. </dd></dl>

<p>References <a class="el" href="xsem__client__api_8h.html#ac4647a15a88b83a78b121aa668f0d218">CMD_EM_EVENT_REGISTER</a>, <a class="el" href="struct_x_sem___notifier.html#a008fbf58dc2f6803c788227b0d91ba9a">XSem_Notifier::Event</a>, <a class="el" href="struct_x_sem___notifier.html#a14fb3416755928d53ced15f1f52f333d">XSem_Notifier::Flag</a>, and <a class="el" href="struct_x_sem___notifier.html#a3eb242c1c56c426c65843c162e46725d">XSem_Notifier::Module</a>.</p>

<p>Referenced by <a class="el" href="xsem__npi__example__pl__mb_8c.html#ad815d14892da5f95a002dea17c44cb4b">XSem_NpiEventRegisterNotifier()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
